package Server.TechnicalServices.Mapper;

import java.util.ArrayList;

import Server.Entity.Dominio.EProgetto;
import Server.Entity.Dominio.ESottoprogetto;
import Server.Entity.IceClasses.EProgettoI;

public class MProgetto implements Mapper{

	@Override
	public EProgettoI getIceObj(Object hibObj) {
		EProgettoI iceprogetto = null;
		
		if(hibObj instanceof EProgetto)
		{
			iceprogetto = new EProgettoI();
			
			//////////////mapper////////////
			MMoney moneymapper = new MMoney();
			MSottoprogetto sottoprogettomapper = new MSottoprogetto();
			
			//////////variabili appoggio///////////
			//Format format= iceprogetto.getDateFormat();
			
			iceprogetto.sottoprogetti = new ArrayList<EntityCondivise.ESottoprogetto>();
			
			iceprogetto.nome= ((EProgetto) hibObj).getNome();
			iceprogetto.budget= moneymapper.getIceObj(((EProgetto) hibObj).getBudget());
			iceprogetto.costo= moneymapper.getIceObj(((EProgetto) hibObj).getCosto());
			iceprogetto.descrizione=((EProgetto) hibObj).getDescrizione();
			iceprogetto.id=((EProgetto) hibObj).getId();
			iceprogetto.inizio= ((EProgetto) hibObj).getInizio();
			iceprogetto.scadenza = ((EProgetto) hibObj).getScadenza();
			
			for (ESottoprogetto sottoprogetto : ((EProgetto) hibObj).getSottoprogetti()) {
				iceprogetto.sottoprogetti.add(sottoprogettomapper.getIceObj(sottoprogetto));
			}
			
		}
		return iceprogetto;
	}

	@Override
	public EProgetto getHibObj(Object iceObj) {
		EProgetto hibprogetto= null;
		
		if(iceObj instanceof EProgettoI){
			hibprogetto= new EProgetto();
			
			/////////mapper
			MMoney moneymapper = new MMoney();
			MSottoprogetto sottoprogettomapper = new MSottoprogetto();
			
			//////////Variabili appoggio/////
			//Format format = ((EProgettoI) iceObj).getDateFormat();
			ArrayList<ESottoprogetto> sottoprogetti = new ArrayList<ESottoprogetto>();
			
			
			hibprogetto.setBudget(moneymapper.getHibObj(((EProgettoI) iceObj).budget));
			hibprogetto.setCosto(moneymapper.getHibObj(((EProgettoI) iceObj).costo));
			hibprogetto.setInizio(((EProgettoI) iceObj).inizio);
			hibprogetto.setScadenza(((EProgettoI) iceObj).scadenza);
			
			
			hibprogetto.setDescrizione(((EProgettoI) iceObj).descrizione);
			hibprogetto.setId(((EProgettoI) iceObj).id);
			hibprogetto.setNome(((EProgettoI) iceObj).nome );
			
			for (EntityCondivise.ESottoprogetto eSottoprogetto : ((EProgettoI) iceObj).sottoprogetti) {
				sottoprogetti.add(sottoprogettomapper.getHibObj(eSottoprogetto));
				
			}
			hibprogetto.setSottoprogetti(sottoprogetti);
			hibprogetto.calcolaCosto();
			
		}
		return hibprogetto;
	}

}
